package com.example.exam.controller;

import com.example.exam.entity.*;
import com.example.exam.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;

/**
 * (Student)表控制层
 *
 * @author makejava
 * @since 2021-09-04 15:02:45
 */
@RestController
@RequestMapping("student")
public class StudentController {
    /**
     * 服务对象
     */
    @Autowired
    private StudentService studentService;

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @RequestMapping("selectOne")
    public Student selectOne(Integer id) {
        return this.studentService.queryById(1001);
    }

    /**
     * 通过学生主键查询符合其专业的考试科目
     *
     * @param //session 通过session得到相应的stuid
     * @return 单条或者多个数据
     */
    @RequestMapping("/selectbystuid")
    List<Question> selectbystuid(Integer stuid) {//HttpSession session){

        return studentService.selectbystuid(stuid);//session);
    }


//    @RequestMapping("/session")
//    public Boolean insertOne(Integer userId) { //HttpSession session) {
//        //session.setAttribute("userId",userId);
//        return true;
//    }

    /**
     * 通过试题主键查询选择题
     *
     * @return 多个选择题（5个）
     */
    @RequestMapping("/selectchoice")
    public List<Choice> selectchoice(HttpSession session) {
        int questionId = 101;//(int) session.getAttribute("questionId");
        return studentService.selectchoice(questionId);
    }

    @RequestMapping("/select")
    public List select(HttpSession session) {
        int questionId = (int) session.getAttribute("questionId");
        List a = new ArrayList<>();
        a.add(studentService.selectchoice(questionId));
        a.add(studentService.selecttorf(questionId));
        a.add(studentService.selectfillbacks(questionId));
        a.add(studentService.selectsubjective(questionId));
        return a;
    }

    @RequestMapping("/session")
    public Boolean insertOne(Integer questionid, HttpSession session) {
        session.setAttribute("questionId", questionid);
        session.setAttribute("flag", questionid);
        return true;
    }


    /**
     * 通过试题主键查询判断题
     *
     * @return 多个判断题（5个）
     */
    @RequestMapping("/selecttorf")
    public List<Torf> selecttorf(HttpSession session) {
        int questionId = 101;//(int) session.getAttribute("questionId");
        return studentService.selecttorf(questionId);
    }

    /**
     * 通过试题主键查询主观题
     *
     * @return 多个选择题（2个）
     */
    @RequestMapping("/selectsubjective")
    public List<Subjective> selectsubjective(HttpSession session) {
        int questionId = 101;//(int) session.getAttribute("questionId");
        return studentService.selectsubjective(questionId);
    }

    /**
     * 通过试题主键查询填空题
     *
     * @return 多个填空题（5个）
     */
    @RequestMapping("/selectfillbacks")
    public List<Fillbacks> selectfillbacks(HttpSession session) {
        int questionId = 101;//(int) session.getAttribute("questionId");
        return studentService.selectfillbacks(questionId);
    }

    /**
     * 更新操作
     *
     * @param student 只要在student的属性内，都可以匹配。
     * @return 返回更新后的信息
     */
    @RequestMapping("/update")
    public Student update(Student student) {
        return studentService.update(student);
    }

    /**
     * 将考完试的答案以及试卷号，以及考生ID插入进中间表stuans中
     *
     * @param s,questionid,session s代表着答案字符串，以#分割
     * @return 返回中间表插入对象
     */
    @RequestMapping("/insert_answer")
    public Stuans insert_answer(String s, Integer questionId, HttpSession session) {
        return studentService.insert_answer(s, questionId, session);
    }

    /**
     * 查询成绩
     *
     * @param //session 根据学生id查询相应的成绩记录
     * @return 返回表内的全部数据
     */
    @RequestMapping("/grade")
    public List<Grade> select_grade(Integer stuid) {//HttpSession session){
        return studentService.select_grade(stuid);//session);
    }

    /**
     * 查询通知信息
     *
     * @param
     * @return 返回所有通知信息
     */
    @RequestMapping("/selectmessage")
    public List<Message> selectmessage() {
        return studentService.selectmessage();
    }


}